

// Test file for DObjcTokenizer

#include "objc/Object.h"
#import <assert.h>

#if _INTERFACE_
#define test 109
#elif _PUBLIC_
#define test 0x2C
#else
#define test 0216
#endif

#ifdef _INTERFACE_
#define info L"inteface"
#endif
#ifndef _INTERFACE_
#define info @"public"
#endif
#undef info
#line 200
#error "error\\\n\x1\02\a\b\f\n\r\t\vs"
#warning "warning and \
concatted"
#assert system(ofc)
#unassert system(ofc)
#ident "ObjcTokenizer"
#pragma once

extern short    sh;

typedef struct
{
  int a;
  enum { e1, e2 } b;
  union 
  {
    int z;
    int y;
  } c;
} d;

@protocol DTestProt

- (int) add :(long) extra;

@end

@interface DTest : Object <DTestProt>
{
@private
  int      _int;
@protected
  int     *_pntr;
@public
  int      _public;
}

- (DTest *) init;

- (int) add :(long) extra;

+ (int) sum :(long) extra;

@end

  
@implementation DTest

- (DTest *) init
{
           char     ch ='\xd';
  auto     double   db =.32e-7l;
  static   float    fl =-072.0;
  register int      it =0666;
  volatile long     lg =122131L;
  const    unsigned un =90u;

  <:super init:>;
  
  for (it = 0; it < 4; it++)
  {
    switch(ch)
    {
     case '\07' : break;
     default: goto label;
    }
    
    if (fl != .34 && db > -2 || lg >= 12 && !un == 100L)
      db += fl;
    else
    {
      lg <<= it;
      continue;
    }
  }

  it = L'5';
  
  do
  <%
    it--;
  %>
  while (it <= 4);
  
label:
  it += 4 & 5;
  it -= 4 | 5;
  it *= 4 ^ 5;
  it /= ~4;
  it %= 25 >> 4;
  it >>= 5 << 1;
  it <<= 5 + 4;
  it &= 5 - 4;
  it |= 5 * 4;
  it ^= 5 % 4;
  it  = 5 / 4;

  [self add :4];
  
  return self;
}

- (int) add :(long) extra
{
  SEL sel = @selector(add);
  
  _int  = sizeof(sel);
  
  _pntr = &_int;
  
  return *_pntr;
}

+ (int) sum :(long) extra
{
  return 0;
}

@end

/*==========================================================================*/
